Oasis: Concolic Execution Driven by Test Suites and Code Modifications
نویسندگان
چکیده
Testing remains an important aspect of checking software correctness. Manually constructed test suites are one option: they typically complete quickly, but they require human involvement in producing test cases, and their coverage may be limited. Recently, symbolic execution and concolic execution have been investigated as alternatives to test suites. These approaches require little manual intervention, and coverage can in theory be complete. However, their running times may be prohibitive for programs with complex control flow and large inputs. The system we present in this report, called Oasis, is a research prototype that attempts to combine the advantages of test suites (speed) and concolic execution (coverage). Oasis leverages any valid inputs to the program, from test suites or past execution logs, to quickly explore the paths covered by these inputs and reach deep program paths. It then uses concolic execution to automatically explore alternative paths. This exploration starts with those paths that derive directly from the executions with valid inputs. When used for regression testing, Oasis prioritizes the exploration of paths and constraints resulting from new or modified code. We study our techniques using two real applications, the wget Web client and the uServer Web server. Our experiments demonstrate that Oasis can quickly reach “deep” program paths (in both old and new code), and that it effectively tests the new code more extensively during regression testing. Using bug injection, we demonstrate that Oasis is able to uncover bugs that regular symbolic or concolic engines may not be able to reach within a given time budget.
منابع مشابه
Directed Test Generation for Improved Fault Localization
Fault-localization techniques that apply statistical analyses to execution data gathered from multiple tests are quite effective when a large test suite is available. However, if no test suite is available, what is the best approach to generate one? This paper investigates the fault-localization effectiveness of test suites generated according to several test-generation techniques based on comb...
متن کاملAbstraction-driven Concolic Testing
ion-driven Concolic Testing‹ Przemys law Daca, Ashutosh Gupta, and Thomas A. Henzinger 1 IST Austria, Austria 2 Tata Institute for Fundamental Research, India Abstract. Concolic testing is a promising method for generating test suites for large programs. However, it suffers from the path-explosion problem and often fails to find tests that cover difficult-to-reach parts of programs. In contrast...
متن کاملScaling Concolic Execution of Binary Programs for Security Applications
Concolic execution is a technique for program analysis that makes the values of certain inputs symbolic, symbolically executes a program’s code, and computes a symbolic logical formula to represent a desired behavior of the program under analysis. The computed formula is then solved by a decision procedure to determine whether the desired behavior is feasible and, if so, provide an example prog...
متن کاملLATEST : Lazy Dynamic Test Input Generation
We present lazy expansion, a new algorithm for scalable test input generation using directed concolic execution. Lazy expansion is an instantiation of the counterexample-guided refinement paradigm from static software verification in the context of testing. Our algorithm works in two phases. It first explores, using concolic execution, an abstraction of the function under test by replacing each...
متن کاملDirected test suite augmentation: an empirical investigation
Test suite augmentation techniques are used in regression testing to identify code elements in a modified program that are not adequately tested and to generate test cases to cover those elements. A defining feature of test suite augmentation techniques is the potential for reusing existing regression test suites. Our preliminary work suggests that several factors influence the efficiency and e...
متن کامل